package netty.test15websocket;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;

import java.util.Date;

/**
 * 泛型里的TextWebSocketFrame 表示一个文本帧 frame
 */
public class MyServerTextWebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {



    @Override
    protected void channelRead0(ChannelHandlerContext channelHandlerContext, TextWebSocketFrame msg) throws Exception {
        //1,接收浏览器发的消息
        System.out.println("服务器端收到消息------->"+msg.text());
        //给浏览器发消息(应为约定了数据是 TextWebSocketFrame 所以我们发的消息也要是这个类型)
        channelHandlerContext.channel().writeAndFlush(new TextWebSocketFrame("服务器时间为---->"+ new Date().toString() +",信息："+msg.text()));

    }

    /**
     * 连接后会触发这个方法。。
     * id 表示唯一的一个值，有两种表示形式 longText（唯一的） 和ShortText（不是唯一的）
     */
    @Override
    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
        System.out.println("handlerAdded被调用。。。。longText="+ctx.channel().id().asLongText()+",shortText="+ctx.channel().id().asShortText());
    }

    @Override
    public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
        System.out.println("handlerRemoved被调用。。。。longText="+ctx.channel().id().asLongText()+",shortText="+ctx.channel().id().asShortText());
    }
}
